---@class FighterAttributeEnum
---@field New fun():FighterAttributeEnum
FighterAttributeEnum = ClientFight.CreateClass("FighterAttributeEnum")
function FighterAttributeEnum:ctor(id,chinese,min,max,power)
    self.id = id
    self.chinese = chinese
    self.min = min
    self.max = max
    self.power = power
end
function FighterAttributeEnum:getId()
    return self.id
end

local list = {}
local function VALUE(v)
    table.insert(list,v)
    return v
end
function FighterAttributeEnum:values()
    return list
end
FighterAttributeEnum.NONE = VALUE(FighterAttributeEnum.New(0, "无", 0, 0, 0))
-- 攻击
FighterAttributeEnum.ATK = VALUE(FighterAttributeEnum.New(1, "攻击", 0, 999999999, 5))
-- 防御
FighterAttributeEnum.DEF = VALUE(FighterAttributeEnum.New(2, "防御", 0, 999999999, 3))
-- 生命 
FighterAttributeEnum.HP = VALUE(FighterAttributeEnum.New(3, "生命", 0, 999999999, 0.3))
-- 暴击率 
FighterAttributeEnum.CRITRATE = VALUE(FighterAttributeEnum.New(4, "暴击率", 0, 10000, 75))
-- 暴击增伤 
FighterAttributeEnum.CRITDAMAGE = VALUE(FighterAttributeEnum.New(5, "暴击增伤", 0, 10000, 60))
-- 命中 
FighterAttributeEnum.HITRATE = VALUE(FighterAttributeEnum.New(6, "命中", 0, 1000, 120))
-- 闪避 
FighterAttributeEnum.DODGE = VALUE(FighterAttributeEnum.New(7, "闪避", 0, 1000, 120))
-- 灵敏 
FighterAttributeEnum.SPEED = VALUE(FighterAttributeEnum.New(8, "灵敏", 0, 100, 120))
-- 伤害加成 
FighterAttributeEnum.DAMAGE = VALUE(FighterAttributeEnum.New(9, "伤害加成", 0, 10000, 120))
-- 物理抵抗率 
FighterAttributeEnum.PHYSICAL_DAMAGE = VALUE(FighterAttributeEnum.New(10, "物理抵抗率", 0, 10000, 120))
-- 魔法抵抗率 
FighterAttributeEnum.MAGIC_DAMAGE = VALUE(FighterAttributeEnum.New(11, "魔法抵抗率", 0, 10000, 120))
-- 吸血效果 
FighterAttributeEnum.BLOOD = VALUE(FighterAttributeEnum.New(12, "吸血效果", 0, 100, 120))
-- 冷却缩减 
FighterAttributeEnum.CD = VALUE(FighterAttributeEnum.New(13, "冷却缩减", 0, 10000, 120))
-- 攻击加成 
FighterAttributeEnum.ATK_PER = VALUE(FighterAttributeEnum.New(14, "攻击加成", 0, 100000, 0))
-- 防御加成 
FighterAttributeEnum.DEF_PER = VALUE(FighterAttributeEnum.New(15, "防御加成", 0, 100000, 0))
-- 生命加成
FighterAttributeEnum.HP_PER = VALUE(FighterAttributeEnum.New(16, "生命加成", 0, 100000, 0))
-- 攻速加成 
FighterAttributeEnum.ATTACK_SPEED = VALUE(FighterAttributeEnum.New(17, "攻速加成", 0, 10000, 120))
-- 格挡伤害 
FighterAttributeEnum.BLOCK = VALUE(FighterAttributeEnum.New(18, "格挡伤害", 0, 10000, 200))
-- 忽视攻击 
FighterAttributeEnum.IGNORE_ATK = VALUE(FighterAttributeEnum.New(19, "忽视攻击", 0, 10000, 0))
-- 忽视防御 
FighterAttributeEnum.IGNORE_DEF = VALUE(FighterAttributeEnum.New(20, "忽视防御", 0, 10000, 0))
-- 基础攻击加成 
FighterAttributeEnum.BASE_ATK_PER = VALUE(FighterAttributeEnum.New(21, "基础攻击加成", 0, 100000, 0))
-- 基础防御加成 
FighterAttributeEnum.BASE_DEF_PER = VALUE(FighterAttributeEnum.New(22, "基础防御加成", 0, 100000, 0))
-- 基础生命加成 
FighterAttributeEnum.BASE_HP_PER = VALUE(FighterAttributeEnum.New(23, "基础生命加成", 0, 100000, 0))
-- 装备攻击加成 
FighterAttributeEnum.EQUIP_ATK_PER = VALUE(FighterAttributeEnum.New(24, "装备攻击加成", 0, 100000, 0))
-- 装备防御加成 
FighterAttributeEnum.EQUIP_DEF_PER = VALUE(FighterAttributeEnum.New(25, "装备防御加成", 0, 100000, 0))
-- 装备生命加成 
FighterAttributeEnum.EQUIP_HP_PER = VALUE(FighterAttributeEnum.New(26, "装备生命加成", 0, 100000, 0))
-- 神圣伤害 
FighterAttributeEnum.HOLY = VALUE(FighterAttributeEnum.New(27, "神圣伤害", 0, 10000, 240))
-- 治疗效果 
FighterAttributeEnum.CURE_PER = VALUE(FighterAttributeEnum.New(28, "治疗效果", 0, 100000, 240))
-- 治疗伤害系数 
FighterAttributeEnum.CURE = VALUE(FighterAttributeEnum.New(29, "治疗伤害系数", 0, 100000, 240))
-- 伤害浮动下限 
FighterAttributeEnum.MIN_DAMAGE_FLOAT = VALUE(FighterAttributeEnum.New(30, "伤害浮动下限", 0, 10000, 0))
-- 伤害浮动上限 
FighterAttributeEnum.MAX_DAMAGE_FLOAT = VALUE(FighterAttributeEnum.New(31, "伤害浮动上限", 0, 10000, 0))
-- 回能效率 
FighterAttributeEnum.ENERGY = VALUE(FighterAttributeEnum.New(32, "回能效率", 0, 10000, 0))
-- 韧性 
FighterAttributeEnum.CRIT_RES = VALUE(FighterAttributeEnum.New(33, "韧性", 0, 1000000, 0))
-- 物理穿透率 
FighterAttributeEnum.PHYSICAL_STRIKE = VALUE(FighterAttributeEnum.New(34, "物理穿透率", 0, 1000000, 0))
-- 魔法穿透率 
FighterAttributeEnum.MAGIC_STRIKE = VALUE(FighterAttributeEnum.New(35, "魔法穿透率", 0, 1000000, 0))
--治疗效果
FighterAttributeEnum.CURE_EFFECT = VALUE(FighterAttributeEnum.New(36, "治疗效果", 0, 1000000, 0))
--攻击距离加成
FighterAttributeEnum.ATTACK_RANGE_PER = VALUE(FighterAttributeEnum.New(37, "攻击距离加成", 0, 1000000, 0))
--使用技能时,耗能减免(绝对值)
FighterAttributeEnum.ENERGY_COST = VALUE(FighterAttributeEnum.New(38, "使用技能时,耗能减免", 0, 1000000, 0))
--移动速度加成万分比
FighterAttributeEnum.MOVE_SPEED_PER = VALUE(FighterAttributeEnum.New(39, "移动速度加成万分比", 0, 100000, 0))
--移动速度_绝对值
FighterAttributeEnum.MOVE_SPEED = VALUE(FighterAttributeEnum.New(40, "移动速度_绝对值", 0, 100000, 0))
--特定条件下才生效的 韧性
FighterAttributeEnum.CRIT_RES_41 = VALUE(FighterAttributeEnum.New(41, "特定条件下才生效的 韧性", 0, 100000, 0))

        --- 锁定每次受伤的 上限,最多不超过 生命上限的 n %
FighterAttributeEnum.LOCK_DAMAGE = VALUE(FighterAttributeEnum.New(42, "锁定每次受伤的上限", 0, 10000, 0))
FighterAttributeEnum.ATK_SHI_ZHAN_SHI= VALUE(FighterAttributeEnum.New(43, "对战士的攻势", 0, 1000000, 0))
FighterAttributeEnum.ATK_SHI_QI_SHI= VALUE(FighterAttributeEnum.New(44, "对骑士的攻势", 0, 1000000, 0))
FighterAttributeEnum.ATK_SHI_CI_KE= VALUE(FighterAttributeEnum.New(45, "对刺客的攻势", 0, 1000000, 0))
FighterAttributeEnum.ATK_SHI_MO_DAO_SHI= VALUE(FighterAttributeEnum.New(46, "对法师的攻势", 0, 1000000, 0))
FighterAttributeEnum.ATK_SHI_YOU_XIA= VALUE(FighterAttributeEnum.New(47, "对游侠的攻势", 0, 1000000, 0))
FighterAttributeEnum.ATK_SHI_MU_SHI= VALUE(FighterAttributeEnum.New(48, "对牧师的攻势", 0, 1000000, 0))
FighterAttributeEnum.DEF_SHI_ZHAN_SHI= VALUE(FighterAttributeEnum.New(49, "对战士的守势", 0, 1000000, 0))
FighterAttributeEnum.DEF_SHI_QI_SHI= VALUE(FighterAttributeEnum.New(50, "对骑士的守势", 0, 1000000, 0))
FighterAttributeEnum.DEF_SHI_CI_KE= VALUE(FighterAttributeEnum.New(51, "对刺客的守势", 0, 1000000, 0))
FighterAttributeEnum.DEF_SHI_MO_DAO_SHI= VALUE(FighterAttributeEnum.New(52, "对法师的守势", 0, 1000000, 0))
FighterAttributeEnum.DEF_SHI_YOU_XIA= VALUE(FighterAttributeEnum.New(53, "对游侠的守势", 0, 1000000, 0))
FighterAttributeEnum.DEF_SHI_MU_SHI= VALUE(FighterAttributeEnum.New(54, "对牧师的守势", 0, 1000000, 0))

local idMap = {}
local function InitIDMap()
    for k,v in pairs(FighterAttributeEnum:values()) do
        if type(v) == "table" and getmetatable(v) == FighterAttributeEnum then
            idMap[v.id] = v
        end
    end
end
InitIDMap()

function FighterAttributeEnum.valueOf(id)
    return idMap[id] or FighterAttributeEnum.NONE
end
---@return FighterAttributeEnum[]
function FighterAttributeEnum.valuesMap()
    return idMap
end